查看原文
其他

Wasm合约测试网Jupiter已发布平行链版本

Patract Patract开放平台 2021-12-09




01

概述

Overview


Jupiter 是由 Patract 维护,包含 Patract 合约设计规范并兼容最新 pallet-contracts 模块的合约测试网。Jupiter 有三种节点,分别是:

1.适用于本地快速测试的 jupiter-dev 节点。
2.独立运行对外提供最新合约功能的 jupiter-prep 独立测试网。
3.运行于中继链上的 jupiter 合约平行链。

三个区块链网络的关键配置基本相同,例如合约计费,区块资源大小等。具体的配置详见下文的 Jupiter 网络板块。Jupiter 的项目地址是:https://github.com/patractlabs/jupiter。


接下来主要以第三个网络 jupiter 为主介绍相关内容。


正常编译后,在编译产物目录中将会出现可执行性文件  jupiter  jupiter 网络对应的节点实现是:

  • 目录 bin/node:平行链测试网模式,采用 Aura 验证人,支持合约部署,调用。

对应的 Runtime 实现是:
  • 目录 runtime/jupiter。

注:针对第三种平行链模式,由于目前中继链(比如 Westend)不支持 Sandbox HostFunction,我们自己运行了一个支持 Sandbox HostFunction 的 Westend 测试网来运行 Jupiter 平行链。后续一旦中继链支持了 Sandbox HostFunction,Jupiter 平行链会切换到官方的 Westend 上。


ChangeLog


  • 1.0.0: Jupiter PoA 网络正式发布,包含jupiter-prep 及 jupiter-dev。

  • 1.0.1: 设置 Jupiter PoA 的 ss58prefix 为 26,今后Jupiter沿用 26 作为地址的 ss58prefix。

  • 1.0.2: 支持 ZK、随机数。

  • 1.0.3: 增加平行链。


Contract


Patract 的 FRAME contracts pallet,我们将来会将它命名为 pallet-patracts。当前合约使用官方的 pallet-contracts,未来我们会迁移到自己的合约模块上。


Patract 的 FRAME contracts pallet 通过 ChainExtension 为合约提供了一些增强的特性,并且包含一些兼容性的修改:

  • ChainExtension
  • [ ] 支持合约日志,参考连接:ink-log
    (https://github.com/patractlabs/ink-log)
  • [x] 支持 Zero-Knowledge,参考连接:PIP-101
    (https://github.com/patractlabs/PIPs/blob/main/PIPs/pip-101.md)

  • pallet-patracts 
  • 目前暂时没有新特性

我们约定如下概念:
  • src pallet-contract:Substrate 官方的 pallet-contract 模块。

  • modified pallet-contracts:Patract 从官方 fork 出来的修改,位于 vendor 目录下。


这两种 pallet_contract 对合约功能的支持:
  • src pallet-contract:支持 Patract 的 ChainExtension。
  • modified pallet-contracts:支持 Patract 的 ChainExtension,以及 Patract 对 pallet-contract 的修改。

注1:Patract 集成合约模块,可以参考 patracts(https://github.com/patractlabs/patracts)
注2:Zero-Knowledge 的相关文档也可以参考:zkmega。(https://docs.patract.io/zkmega/tutorial.html)


02

编译

Compile


编译


git clone --recurse-submodules https://github.com/patractlabs/jupiter.gitcd jupitercargo build --release

上面在编译完成后,在 target/release 下会生成二进制文件:
  • target/release/jupiter


运行


Jupiter


当前 Jupiter 平行链仅支持作为同步节点加入到 Jupiter 测试网:

./jupiter --chain ./jupiter-westend-098.json --execution wasm --wasm-execution=compiled --force-authoring --parachain-id=2000 --tmp \--chain ./westend-098.json --no-beefy --execution wasm --wasm-execution=compiled --tmp \--bootnodes /dns/ws.patract-westend.patract.cn/tcp/30333/p2p/12D3KooWQYyBaNrh9QdvernDFUTapHQTD95S9a6CvSPKXVvCeWx2

注:如果需要在本地进行测试,可以修改 Jupiter-dev(https://github.com/patractlabs/jupiter/blob/master/bin/node/cli/src/command.rs#L28-L31),并参考这里的运行步骤(https://github.com/patractlabs/jupiter/blob/master/README.md#421-start-local-test-mode-jupiter-parachain)。


03

Jupiter 网络

Jupiter Network


Jupiter 公共配置


三种模式的 Jupiter 网络配置基本一致。对于相同的配置,Jupiter 尽量将相应配置放于 crate 包 runtime/common 中。对于开发人员而言,主要需要注意的配置如下:


1.frame_system::Config 中的配置都是相同的,因此三个网络的区块资源及资源配置都是相同的。

2.pallet_balance::Config中的 ExistentialDeposit 都是 0,因此产生一个新账户或者一个新合约不需要为了这个账户/合约的存活而付押金。

3.pallet_contracts::Config 中的配置主要如下:

  • 与存储租赁相关的配置都设置为0,如 TombstoneDeposit,DepositPerContract,DepositPerStorageByt,RentFraction 等。

  • CallStack 的配置都是32层, 因此合约调合约最大的执行栈相同。

  • 与合约销毁的延迟删除的配置都相同。

  • 合约的 Schedule 配置都相同,均直接采用了默认配置。注意这个配置中的 code_len 即合约的最大大小为 128k。

  • ChainExtension 的配置会由于每个网络的特性及功能支持程度存在不同。


Jupiter 网络的特性及配置


Jupiter 平行链采用的是 Aura 平行链收集人选择算法,对应的测试网为 Jupiter PC1,可以部署在任何基于 Polkadot 的中继链网络上。


Jupiter 平行链测试网是以平行链模式运行的合约测试网,是 Patract 为了 Polkadot 生态提供的合约平行链测试网络。希望在 Polkadot 平行链生态中测试Wasm合约功能的开发者适于选择这个网络进行合约的公开测试。

由于当前Polkadot/Kusama/Westend中继链不能支持Wasm合约模块运行,因此当前Jupiter部署在Patract私有的 Westend 测试网上,该Westend测试网经过 Patract 修改支持了运行合约模块的功能。

polkadot.js 的 Extending types


Jupiter 的开发者扩展类型如下:


{ "LookupSource": "MultiAddress", "Address": "MultiAddress", "AccountInfo": "AccountInfoWithTripleRefCount", "AliveContractInfo": { "trieId": "TrieId", "storageSize": "u32", "pairCount": "u32", "codeHash": "CodeHash", "rentAllowance": "Balance", "rentPayed": "Balance", "deductBlock": "BlockNumber", "lastWrite": "Option<BlockNumber>", "_reserved": "Option<Null>" }, "BabeRandomness": { "epoch": "u64", "start_slot": "u64", "duration": "u64", "randomness": "schnorrkel::Randomness" }}

公开的 Endpoints

当前 Jupiter 部署于的中继链 Westend。请注意这个 Westend 网络是 Patract 部署的私有网络:
  • wss://ws.patract-westend.patract.cn

Jupiter 的开放 provider 如下:
  • wss://ws.jupiter.patract-westend.patract.cn

ChainExtensions




04

合约

Contract


合约


当前 Jupiter PoA 测试网 和 Jupiter 部署的合约有:

  • 稳定币:USDT、jBTC、jETH

  • patramaker:DAI

  • patrapixel

  • patraswap


合约的具体实现,可以参考项目:store-contracts(https://github.com/patractlabs/store-contracts),部署工具采用 Redspot(https://github.com/patractlabs/redspot)。


网络切换


当前 Jupiter PoA 和 Jupiter 分为不同的网络,一个是独立的测试网,一个是平行链版本,除此之外,其他功能和操作都一样。Jupiter PoA 的首页登录(https://patrastore.io/#/jupiter-a1),从 Jupiter PoA 切换网络到 Jupiter:




水龙头


点击「账户」——「Faucet」领取测试币:



等待片刻,检查收到测试币后,就可以回到 PatraStore 首页测试已经部署好的合约。

About Patract

Patract为波卡Wasm合约生态的平行链和DApp开发提供解决方案。我们帮助社区平行链设计和开发链上合约模块和Runtime支持,并且为DApp开发者提供覆盖开发、测试、调试、部署、监控、数据提供和前端开发等阶段的全栈工具和服务支持。


How to join Patract

1.对于合约开发者,可以访问官网(https://patract.io),熟悉测试链和工具套件。欢迎加入官方开发群:

Element(https://app.element.io/#/room/#PatractLabsDev:matrix.org)

Discord(https://discord.gg/wJ8TnTfjcq)


2.对于将要集成Wasm合约功能的平行链项目方,或者使用Wasm合约开发的DApp项目方,欢迎加入Patract 开放平台:https://open.patract.io


3.对于用户,欢迎加入:

Telegram(https://t.me/patract)

Twitter(https://twitter.com/PatractLabs)


4.对于求职者,我们在招聘区块链开发工程师、前端/全栈开发工程师、云平台架构师、数据产品经理、产品经理等岗位,可以联系 sean@patract.io


扫码加入Patract微信开发群


往期精彩:
// PatraShare#8回顾|合约模型和合约语言(框架)
// Patract月报|平行链版本的Jupiter已在7月末发布
// 聚焦去中心计算:在可信平台,如何保证执行一致性的问题?


: . Video Mini Program Like ,轻点两下取消赞 Wow ,轻点两下取消在看

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存